iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

NX 的 Next 模板在建立時已經預設有 Jest 跟 React Testing Library ,可以直接寫測試。

import { render } from '@testing-library/react';
import Page from './page';

describe('Page', () => {
  it('should render successfully', () => {
    const { baseElement } = render(<Page />);
    expect(baseElement).toBeTruthy();
  });
});

另外也已經有測試的指令。

{ 
	//...
  "targets": {   
    "test": {
      "executor": "@nx/jest:jest",
      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
      "options": {
        "jestConfig": "apps/ironman-nextjs/jest.config.ts",
        "passWithNoTests": true
      },
      "configurations": {
        "ci": {
          "ci": true,
          "codeCoverage": true
        }
      }
    }, 
  }, 
}

可以快速的用指令進行測試。

pnpm nx test ironman-nextjs

另外如果在建成 app 的時候有選的話,就會產生 Cypress 模板,可以做 e2e 測試。

pnpm nx e2e ironman-nextjs-e2e

想要對所有專案跑測試的話,只要定義的測試指令名稱相同 target=test,就可以同時且並行的執行。

pnpm exec nx run-many --target=test
// o
pnpm exec nx run-many -t=test

也可以只針對有變更的部分進行測試,使用 git 的話現在預設是測試相對於 main 分支的 PR 進行測試。

pnpm exec nx affected --target=test

上一篇
加入 husky
下一篇
NX Console
系列文
組裝前端開發工具箱,從 NX 入手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Vita Ora
iT邦新手 4 級 ‧ 2023-09-27 15:11:06

Hi 大大好:

剛好看到你這篇文章,因為最近我司碰到一個問題,在做 monorepo test coverage 的功能,遇到 jest 沒辦法轉換 TypeScript 路徑的問題,主因是我們有一個資料夾內的檔案,在 CI runner 無法抓到,另外有試過一些做法:

  • 有試過調整 jest.config.ts 的 moduleDirectories, moduleNameMapper 作法 <-沒用
  • 也有試過想要 mock 該資料夾底下的檔案<-沒用
  • 透過 package.json 加入"@monorepo/system-options": "file:systemOptions" 的做法也會遇到問題 <-沒用

不曉得大大有無碰到類似的狀況 ~

Jasper iT邦新手 4 級 ‧ 2023-09-27 19:47:39 檢舉

抓不到的資料夾是放在什麼位子,lib 嗎?是在跑 app 的測試嗎?

我要留言

立即登入留言